package com.futu.ai.utils;

import com.futu.ai.constant.QiniuConfig;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.io.ByteArrayInputStream;
import java.util.Base64;
import java.util.UUID;

/**
 * 七牛云工具类
 */
@Component
public class QiniuUtils {

    /**
     * 上传图片到七牛云
     * @param base64Image Base64编码的图片数据
     * @return 图片的URL
     */
    public static String uploadImage(String base64Image) throws Exception {
        // 如果base64中包含前缀，则去除前缀
        if (base64Image.contains(",")) {
            base64Image = base64Image.substring(base64Image.indexOf(",") + 1);
        }
        
        // Base64解码
        byte[] imageBytes = Base64.getDecoder().decode(base64Image);
        
        // 创建配置
        Configuration cfg = new Configuration(Region.autoRegion());
        // 创建上传管理器
        UploadManager uploadManager = new UploadManager(cfg);
        
        // 获取认证
        Auth auth = Auth.create(QiniuConfig.ACCESS_KEY, QiniuConfig.SECRET_KEY);
        // 获取上传Token
        String upToken = auth.uploadToken(QiniuConfig.BUCKET_NAME);
        
        // 生成文件名
        String fileName = UUID.randomUUID().toString() + ".jpg";
        
        try {
            // 上传图片
            Response response = uploadManager.put(new ByteArrayInputStream(imageBytes), fileName, upToken, null, null);
            // 解析上传结果
            DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
            
            // 生成访问URL
            String url = QiniuConfig.DOMAIN + putRet.key;
            // 确保URL格式正确
            if (!url.startsWith("http")) {
                url = "http://" + url;
            }
            return url;
        } catch (QiniuException e) {
            throw new Exception("上传图片到七牛云失败: " + e.getMessage());
        }
    }
    
    /**
     * 从七牛云URL获取图片的Base64编码
     * @param url 七牛云图片URL
     * @return Base64编码的图片数据
     */
    public static String getImageBase64(String url) {
        // 这里可以添加从URL下载图片并转为Base64的逻辑
        // 由于比较复杂且不是当前主要需求，暂时返回空
        return "";
    }
} 